Skip to content

Chore/sprint 8d rename blazor admin#176

Closed
frigini wants to merge 2 commits intomasterfrom
chore/sprint-8d-rename-blazor-admin
Closed

Chore/sprint 8d rename blazor admin#176
frigini wants to merge 2 commits intomasterfrom
chore/sprint-8d-rename-blazor-admin

Conversation

@frigini
Copy link
Copy Markdown
Owner

@frigini frigini commented Mar 21, 2026

Summary by CodeRabbit

Release Notes

  • New Features

    • Nova interface administrativa do web com página inicial e endpoint de API
  • Documentation

    • Atualizado status do Sprint 8B.2 para "Em Revisão"
  • Chores

    • Atualizado pacote Refit para versão 10.1.6
    • Adicionadas dependências de build Tailwind CSS e PostCSS

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 21, 2026

📝 Walkthrough

Walkthrough

A atualização das versões dos pacotes NuGet Refit de 10.0.1 para 10.1.6, atualização do status do roadmap de um sprint, e adição de uma nova aplicação web Next.js para Admin com configurações completas (TypeScript, Tailwind CSS, PostCSS) e código boilerplate inicial.

Changes

Cohort / File(s) Summary
Gerenciamento Central de Pacotes
Directory.Packages.props, src/Web/package.json
Atualização de versões do Refit (10.0.1 → 10.1.6) e adição de dependências de build (tailwindcss, postcss, autoprefixer).
Documentação e Configuração do Projeto
docs/roadmap-current.md, src/Web/MeAjudaAi.Web.Admin/project.json
Atualização do status do sprint de "Concluída" para "EM REVISÃO" e adição de arquivo de configuração Nx para o novo projeto Admin.
Configuração TypeScript
src/Web/MeAjudaAi.Web.Admin/tsconfig.json, src/Web/MeAjudaAi.Web.Admin/next-env.d.ts, src/Web/MeAjudaAi.Web.Admin/index.d.ts
Configuração TypeScript para Next.js com extensão de base, referências de tipos Next.js e declarações de módulo para importações SVG.
Configuração de Build e Estilo
src/Web/MeAjudaAi.Web.Admin/.swcrc, src/Web/MeAjudaAi.Web.Admin/next.config.js, src/Web/MeAjudaAi.Web.Admin/postcss.config.js, src/Web/MeAjudaAi.Web.Admin/tailwind.config.js
Arquivos de configuração para SWC, Next.js com integração Nx, PostCSS com Tailwind e Tailwind CSS com padrões de conteúdo.
Aplicação Web Next.js
src/Web/MeAjudaAi.Web.Admin/src/app/layout.tsx, src/Web/MeAjudaAi.Web.Admin/src/app/page.tsx, src/Web/MeAjudaAi.Web.Admin/src/app/global.css, src/Web/MeAjudaAi.Web.Admin/src/app/api/hello/route.ts
Arquivos da aplicação Next.js incluindo layout raiz, página inicial com UI completa de landing page, estilos globais com Tailwind, e manipulador de rota API simples.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Poem

🐰 Um novo app Next.js floresceu,
com Tailwind e TypeScript bem nutrido,
config e estilo se abraçaram,
Refit evoluiu com graça,
o sprint em revisão descansou! ✨

🚥 Pre-merge checks | ❌ 3

❌ Failed checks (3 warnings)

Check name Status Explanation Resolution
Title check ⚠️ Warning O título se refere ao renomeamento de um admin Blazor, mas a maioria das mudanças envolvem a criação de um novo projeto web admin com tecnologias Next.js/React/TypeScript. Atualize o título para refletir com precisão as mudanças principais, como 'Adicionar novo projeto MeAjudaAi.Web.Admin baseado em Next.js' ou similar.
Description check ⚠️ Warning Nenhuma descrição foi fornecida pelo autor, mas o template requer seções como Resumo, Problema, Solução, Mudanças, Impacto e Testes. Adicione uma descrição completa seguindo o template da repository, explicando o objetivo da mudança e o impacto esperado.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/sprint-8d-rename-blazor-admin

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/Web/package.json (1)

57-69: ⚠️ Potential issue | 🟡 Minor

Remova a dependência incompatível @tailwindcss/postcss@4.2.1 ou atualize para Tailwind CSS v4.

O pacote @tailwindcss/postcss@4.2.1 é destinado exclusivamente ao Tailwind CSS v4.x, mas o projeto está usando tailwindcss@3.4.3. A configuração atual em postcss.config.js usa o padrão correto para Tailwind v3 (plugin tailwindcss direto), então @tailwindcss/postcss está sendo ignorado como dependência não utilizada. Remove esta dependência desnecessária ou considere migrar para Tailwind CSS v4 conforme apropriado.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Web/package.json` around lines 57 - 69, Remova a dependência incompatível
'@tailwindcss/postcss@4.2.1' do package.json ou, se pretende migrar para
Tailwind v4, atualize 'tailwindcss' para v4 e ajuste 'postcss.config.js'
conforme a nova integração; localize a entrada '@tailwindcss/postcss' em
package.json e delete-a (ou substituir a versão de 'tailwindcss' por uma v4.x
compatível e revisar a configuração em postcss.config.js para usar o
plugin/integração requerida pelo Tailwind v4).
🧹 Nitpick comments (3)
src/Web/MeAjudaAi.Web.Admin/src/app/api/hello/route.ts (1)

1-3: Endpoint de scaffolding sem autenticação.

Este endpoint placeholder é aceitável para o setup inicial do projeto. Antes de adicionar endpoints reais, será necessário configurar autenticação (NextAuth + Keycloak) seguindo o padrão do MeAjudaAi.Web.Customer que utiliza middleware.ts com withAuth.

Posso ajudar a criar um middleware.ts para o Admin Portal quando for necessário implementar a autenticação?

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Web/MeAjudaAi.Web.Admin/src/app/api/hello/route.ts` around lines 1 - 3, O
endpoint GET em route.ts é um placeholder sem autenticação; crie um
middleware.ts que aplique withAuth (mesma abordagem usada em
MeAjudaAi.Web.Customer) para proteger rotas do Admin Portal antes de expor
endpoints reais, e altere/planeje proteger este handler (função GET em route.ts)
para depender do contexto autenticado (ou retirar o endpoint público) garantindo
que somente requisições autenticadas alcancem os handlers; use os mesmos
símbolos/contratos (withAuth, middleware.ts, função GET em route.ts) para
localizar e integrar a solução.
src/Web/MeAjudaAi.Web.Admin/src/app/layout.tsx (1)

3-6: Atualizar descrição dos metadados.

A descrição "Generated by create-nx-workspace" é um placeholder gerado automaticamente. Considere atualizar para uma descrição mais adequada ao projeto.

♻️ Sugestão de metadados
 export const metadata = {
-  title: 'Welcome to MeAjudaAi.Web.Admin',
-  description: 'Generated by create-nx-workspace',
+  title: 'MeAjudaAi Admin Portal',
+  description: 'Portal administrativo da plataforma MeAjudaAi',
 };
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Web/MeAjudaAi.Web.Admin/src/app/layout.tsx` around lines 3 - 6, Atualize
o objeto exportado metadata em layout.tsx para remover o placeholder "Generated
by create-nx-workspace" e substituí‑lo por uma descrição curta e relevante ao
projeto (por exemplo descrevendo a finalidade administrativa do painel,
público-alvo ou funcionalidades principais); localize a constante metadata
exportada e edite a propriedade description para uma string concisa e descritiva
que represente o projeto.
src/Web/MeAjudaAi.Web.Admin/project.json (1)

1-9: Admin deveria manter consistência com outras aplicações Next.js ao definir targets explicitamente.

O projeto MeAjudaAi.Web.Admin possui targets: {} vazio, enquanto os projetos MeAjudaAi.Web.Customer e MeAjudaAi.Web.Provider definem explicitamente targets para build, serve e lint. Para manter consistência entre as aplicações, recomenda-se adicionar os targets do Admin, seguindo o padrão do Customer.

♻️ Adicionar targets explícitos
 {
   "name": "MeAjudaAi.Web.Admin",
   "$schema": "../node_modules/nx/schemas/project-schema.json",
   "sourceRoot": "MeAjudaAi.Web.Admin",
   "projectType": "application",
   "tags": [],
   "// targets": "to see all targets run: nx show project MeAjudaAi.Web.Admin --web",
-  "targets": {}
+  "targets": {
+    "build": {
+      "command": "next build",
+      "outputs": ["{workspaceRoot}/dist/MeAjudaAi.Web.Admin"],
+      "options": {
+        "cwd": "MeAjudaAi.Web.Admin"
+      }
+    },
+    "serve": {
+      "command": "next dev",
+      "options": {
+        "cwd": "MeAjudaAi.Web.Admin"
+      }
+    },
+    "lint": {
+      "command": "next lint",
+      "options": {
+        "cwd": "MeAjudaAi.Web.Admin"
+      }
+    }
+  }
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Web/MeAjudaAi.Web.Admin/project.json` around lines 1 - 9, O arquivo do
projeto MeAjudaAi.Web.Admin tem "targets": {} vazio; alinhe-o aos outros apps
Next.js adicionando entradas explícitas para os targets usados pelos demais
projetos (por exemplo "build", "serve" e "lint") conforme o padrão do
MeAjudaAi.Web.Customer/Provider; edite o objeto "targets" no projeto
MeAjudaAi.Web.Admin e copie/adapte as configurações de "build", "serve" e "lint"
(incluindo executors/targets, opções e dependências) usadas nos outros projetos
para manter consistência.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/Web/MeAjudaAi.Web.Admin/.swcrc`:
- Around line 1-30: The .swcrc file is ignored by Next.js 15 so delete the
.swcrc file and remove its settings; if you need to preserve any SWC options,
migrate them into next.config.js by adding the equivalent settings under the
Next config (use the compiler or relevant experimental SWC options in
next.config.js) instead of .swcrc so Next.js picks them up; reference the
existing .swcrc file and update next.config.js's compiler (or experimental SWC)
object accordingly.

In `@src/Web/MeAjudaAi.Web.Admin/src/app/global.css`:
- Around line 286-287: Remova os seletores com bloco vazio em global.css para
resolver o erro de lint `block-no-empty`: exclua as regras vazias para
".list-item-link:hover > span" e a outra regra vazia mencionada (linhas
correspondentes contendo o seletor vazio por volta de 294-295), garantindo que
nenhum seletor sem declarações permaneça no arquivo; se comportamento futuro for
necessário, substitua o bloco por um comentário explicativo ou adicione as
propriedades reais em vez de deixar um bloco vazio.
- Around line 7-21: O bloco de font-family viola regras do Stylelint
(font-family-name-quotes e value-keyword-case): revise todas as declarações de
font-family e coloque entre aspas as font-families que contêm espaços (ex.:
"Segoe UI", "Helvetica Neue", "Noto Sans", "Apple Color Emoji", "Segoe UI
Emoji", "Segoe UI Symbol", "Noto Color Emoji") e normalize os keywords para
lowercase (ex.: sans-serif, system-ui, -apple-system, BlinkMacSystemFont);
aplique a mesma correção nos outros blocos referidos (linhas indicadas no
comentário) para que todas as ocorrências de font-family sigam as regras do
projeto.

In `@src/Web/MeAjudaAi.Web.Admin/src/app/page.tsx`:
- Around line 2-6: Atualize o comentário de orientação no topo do arquivo
page.tsx para apontar para o arquivo de estilo correto: substitua a referência
"./index.tailwind" por "./global.css" no bloco de comentário inicial do arquivo
(o comentário multilinha logo no início de
src/Web/MeAjudaAi.Web.Admin/src/app/page.tsx) para que a instrução indique o
arquivo de estilos atual usado pelo projeto.

---

Outside diff comments:
In `@src/Web/package.json`:
- Around line 57-69: Remova a dependência incompatível
'@tailwindcss/postcss@4.2.1' do package.json ou, se pretende migrar para
Tailwind v4, atualize 'tailwindcss' para v4 e ajuste 'postcss.config.js'
conforme a nova integração; localize a entrada '@tailwindcss/postcss' em
package.json e delete-a (ou substituir a versão de 'tailwindcss' por uma v4.x
compatível e revisar a configuração em postcss.config.js para usar o
plugin/integração requerida pelo Tailwind v4).

---

Nitpick comments:
In `@src/Web/MeAjudaAi.Web.Admin/project.json`:
- Around line 1-9: O arquivo do projeto MeAjudaAi.Web.Admin tem "targets": {}
vazio; alinhe-o aos outros apps Next.js adicionando entradas explícitas para os
targets usados pelos demais projetos (por exemplo "build", "serve" e "lint")
conforme o padrão do MeAjudaAi.Web.Customer/Provider; edite o objeto "targets"
no projeto MeAjudaAi.Web.Admin e copie/adapte as configurações de "build",
"serve" e "lint" (incluindo executors/targets, opções e dependências) usadas nos
outros projetos para manter consistência.

In `@src/Web/MeAjudaAi.Web.Admin/src/app/api/hello/route.ts`:
- Around line 1-3: O endpoint GET em route.ts é um placeholder sem autenticação;
crie um middleware.ts que aplique withAuth (mesma abordagem usada em
MeAjudaAi.Web.Customer) para proteger rotas do Admin Portal antes de expor
endpoints reais, e altere/planeje proteger este handler (função GET em route.ts)
para depender do contexto autenticado (ou retirar o endpoint público) garantindo
que somente requisições autenticadas alcancem os handlers; use os mesmos
símbolos/contratos (withAuth, middleware.ts, função GET em route.ts) para
localizar e integrar a solução.

In `@src/Web/MeAjudaAi.Web.Admin/src/app/layout.tsx`:
- Around line 3-6: Atualize o objeto exportado metadata em layout.tsx para
remover o placeholder "Generated by create-nx-workspace" e substituí‑lo por uma
descrição curta e relevante ao projeto (por exemplo descrevendo a finalidade
administrativa do painel, público-alvo ou funcionalidades principais); localize
a constante metadata exportada e edite a propriedade description para uma string
concisa e descritiva que represente o projeto.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: abd54aeb-3751-4523-a473-b22b68f544d8

📥 Commits

Reviewing files that changed from the base of the PR and between ae08b73 and b3e3f51.

⛔ Files ignored due to path filters (51)
  • src/Client/MeAjudaAi.Client.Contracts/packages.lock.json is excluded by !**/packages.lock.json
  • src/Web/MeAjudaAi.Web.Admin-Blazor/packages.lock.json is excluded by !**/packages.lock.json
  • src/Web/MeAjudaAi.Web.Admin-Blazor/wwwroot/favicon.png is excluded by !**/*.png
  • src/Web/MeAjudaAi.Web.Admin-Blazor/wwwroot/icon-192.png is excluded by !**/*.png
  • src/Web/MeAjudaAi.Web.Admin/public/favicon.ico is excluded by !**/*.ico
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap.css is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js is excluded by !**/dist/**, !**/*.min.js, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map is excluded by !**/dist/**, !**/*.map, !**/*.min.js.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js is excluded by !**/dist/**, !**/*.min.js, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map is excluded by !**/dist/**, !**/*.map, !**/*.min.js.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/js/bootstrap.js is excluded by !**/dist/**, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map is excluded by !**/dist/**, !**/*.map, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js is excluded by !**/dist/**, !**/*.min.js, !**/dist/**
  • src/Web/MeAjudaAi.Web.Admin/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map is excluded by !**/dist/**, !**/*.map, !**/*.min.js.map, !**/dist/**
  • src/Web/package-lock.json is excluded by !**/package-lock.json, !**/package-lock.json
  • tests/MeAjudaAi.Web.Admin.Tests/packages.lock.json is excluded by !**/packages.lock.json
📒 Files selected for processing (136)
  • Directory.Packages.props
  • docs/roadmap-current.md
  • src/Web/MeAjudaAi.Web.Admin-Blazor/.editorconfig
  • src/Web/MeAjudaAi.Web.Admin-Blazor/App.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Authentication/CustomAccountClaimsPrincipalFactory.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Authentication/Fakes/FakeAccessTokenProvider.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Authentication/Fakes/FakeAuthenticationStateProvider.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Authorization/PolicyNames.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Authorization/RoleNames.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Components/Accessibility/LiveRegionAnnouncer.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Components/Accessibility/SkipToContent.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Components/AuthorizeView.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Components/Common/LanguageSwitcher.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Components/Dialogs/CreateAllowedCityDialog.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Components/Dialogs/CreateCategoryDialog.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Components/Dialogs/CreateServiceDialog.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Components/Dialogs/EditAllowedCityDialog.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Components/Dialogs/EditCategoryDialog.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Components/Dialogs/EditProviderDialog.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Components/Dialogs/EditServiceDialog.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Components/Dialogs/ProviderSelectorDialog.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Components/Dialogs/UploadDocumentDialog.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Components/Dialogs/VerifyProviderDialog.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Components/Errors/ErrorBoundaryContent.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Components/FluentValidator.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Configuration/ContentSecurityPolicyConfiguration.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Constants/Modules/Common/CommonConstants.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Constants/Modules/Documents/DocumentConstants.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Constants/Modules/Providers/ProviderConstants.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/DTOs/UploadDocumentDto.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Directory.Build.props
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Extensions/FluxorEffectExtensions.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Extensions/ServiceCollectionExtensions.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Extensions/ValidationExtensions.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Dashboard/DashboardActions.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Dashboard/DashboardEffects.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Dashboard/DashboardReducers.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Dashboard/DashboardState.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Errors/ErrorActions.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Errors/ErrorFeature.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Errors/ErrorReducers.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Errors/ErrorState.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Modules/Documents/DocumentsActions.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Modules/Documents/DocumentsEffects.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Modules/Documents/DocumentsReducers.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Modules/Documents/DocumentsState.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Modules/Locations/LocationsActions.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Modules/Locations/LocationsEffects.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Modules/Locations/LocationsReducers.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Modules/Locations/LocationsState.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Modules/Providers/ProvidersActions.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Modules/Providers/ProvidersEffects.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Modules/Providers/ProvidersReducers.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Modules/Providers/ProvidersState.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Modules/ServiceCatalogs/ServiceCatalogsActions.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Modules/ServiceCatalogs/ServiceCatalogsEffects.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Modules/ServiceCatalogs/ServiceCatalogsReducers.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Modules/ServiceCatalogs/ServiceCatalogsState.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Theme/ThemeActions.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Theme/ThemeReducers.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Features/Theme/ThemeState.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Helpers/Accessibility/AriaHelper.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Helpers/Accessibility/ColorContrastHelper.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Helpers/Accessibility/KeyboardNavigationHelper.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Helpers/Accessibility/LiveRegionHelper.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Helpers/InputSanitizer.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Helpers/PerformanceHelper.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Layout/EmptyLayout.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Layout/MainLayout.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Layout/MainLayout.razor.css
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Layout/NavMenu.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Layout/NavMenu.razor.css
  • src/Web/MeAjudaAi.Web.Admin-Blazor/MeAjudaAi.Web.Admin.csproj
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Pages/AllowedCities.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Pages/Authentication.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Pages/Categories.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Pages/Dashboard.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Pages/Documents.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Pages/NotFound.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Pages/Providers.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Pages/Services.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Pages/Settings.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Program.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/README.md
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Resources/Strings.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Resources/Strings.en.resx
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Resources/Strings.pt-BR.resx
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/ApiAuthorizationMessageHandler.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/ConfigurationService.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/CorrelationIdProvider.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/ErrorHandlingService.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/ErrorLoggingService.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/FluentValidationValidator.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/Interfaces/IConfigurationService.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/Interfaces/ICorrelationIdProvider.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/Interfaces/IPermissionService.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/LiveRegionService.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/OidcDebugService.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/PermissionService.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/Resilience/Http/ApiErrorMessages.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/Resilience/Http/ConnectionStatus.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/Resilience/Http/ConnectionStatusService.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/Resilience/Http/PollyLoggingHandler.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/Resilience/Http/PollyPolicies.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Services/Resilience/Interfaces/IConnectionStatusService.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Shared/ConnectionStatusIndicator.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Shared/RedirectToLogin.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Themes/BrandTheme.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Validators/BusinessProfileDtoValidator.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Validators/BusinessProfileUpdateDtoValidator.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Validators/ContactInfoDtoValidator.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Validators/ContactInfoUpdateDtoValidator.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Validators/CreateProviderRequestDtoValidator.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Validators/PrimaryAddressDtoValidator.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Validators/PrimaryAddressUpdateDtoValidator.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Validators/UpdateProviderRequestDtoValidator.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Validators/UploadDocumentDtoValidator.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/Validators/UploadDocumentValidator.cs
  • src/Web/MeAjudaAi.Web.Admin-Blazor/_Imports.razor
  • src/Web/MeAjudaAi.Web.Admin-Blazor/wwwroot/appsettings.json
  • src/Web/MeAjudaAi.Web.Admin-Blazor/wwwroot/css/app.css
  • src/Web/MeAjudaAi.Web.Admin-Blazor/wwwroot/index.html
  • src/Web/MeAjudaAi.Web.Admin/.swcrc
  • src/Web/MeAjudaAi.Web.Admin/index.d.ts
  • src/Web/MeAjudaAi.Web.Admin/next-env.d.ts
  • src/Web/MeAjudaAi.Web.Admin/next.config.js
  • src/Web/MeAjudaAi.Web.Admin/postcss.config.js
  • src/Web/MeAjudaAi.Web.Admin/project.json
  • src/Web/MeAjudaAi.Web.Admin/public/.gitkeep
  • src/Web/MeAjudaAi.Web.Admin/src/app/api/hello/route.ts
  • src/Web/MeAjudaAi.Web.Admin/src/app/global.css
  • src/Web/MeAjudaAi.Web.Admin/src/app/layout.tsx
  • src/Web/MeAjudaAi.Web.Admin/src/app/page.tsx
  • src/Web/MeAjudaAi.Web.Admin/tailwind.config.js
  • src/Web/MeAjudaAi.Web.Admin/tsconfig.json
  • src/Web/package.json

Comment on lines +1 to +30
{
"jsc": {
"target": "es2017",
"parser": {
"syntax": "typescript",
"decorators": true,
"dynamicImport": true
},
"transform": {
"decoratorMetadata": true,
"legacyDecorator": true
},
"keepClassNames": true,
"externalHelpers": true,
"loose": true
},
"module": {
"type": "commonjs"
},
"sourceMaps": true,
"exclude": [
"jest.config.[ct]s",
".*\\.spec.tsx?$",
".*\\.test.tsx?$",
"./src/jest-setup.ts$",
"./**/jest-setup.ts$",
".*.js$",
".*.d.ts$"
]
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verificar se o Customer project usa .swcrc
echo "=== Verificar .swcrc no Customer project ==="
ls -la src/Web/MeAjudaAi.Web.Customer/.swcrc 2>/dev/null || echo "Customer não possui .swcrc"

echo -e "\n=== Verificar next.config.js do Admin ==="
cat src/Web/MeAjudaAi.Web.Admin/next.config.js 2>/dev/null || echo "Arquivo não encontrado"

echo -e "\n=== Verificar next.config.js do Customer para comparação ==="
cat src/Web/MeAjudaAi.Web.Customer/next.config.js 2>/dev/null || echo "Arquivo não encontrado"

Repository: frigini/MeAjudaAi

Length of output: 737


🌐 Web query:

Next.js 15 custom .swcrc configuration support

💡 Result:

Next.js 15 does not support custom .swcrc configuration files. Next.js uses a customized SWC compiler that manages its own configuration internally. Custom .swcrc files are ignored to prevent incompatibilities, as confirmed in official Next.js documentation and GitHub discussions. SWC configuration is handled through specific options in next.config.js, such as: - compiler: { styledComponents: true, emotion: true, relay: {...} } for framework-specific transforms. - experimental: { swcPlugins: [['plugin', {...}]] } for WASM plugins. - Other flags like transpilePackages, reactCompiler (which uses a hybrid SWC+Babel approach). For advanced customization beyond these, users often fall back to Babel by adding a .babelrc file, which disables SWC automatically. No changes in Next.js 15 enable .swcrc support; minification customization was removed instead.

Citations:


Remover .swcrc – arquivo é ignorado pelo Next.js 15.

O arquivo .swcrc é completamente ignorado pelo Next.js 15. O framework utiliza seu próprio compilador SWC integrado e não suporta arquivos .swcrc personalizados. Qualquer configuração neste arquivo não está sendo aplicada.

Se configuração SWC for necessária, ela deve ser feita no next.config.js usando o objeto compiler ou options experimentais.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Web/MeAjudaAi.Web.Admin/.swcrc` around lines 1 - 30, The .swcrc file is
ignored by Next.js 15 so delete the .swcrc file and remove its settings; if you
need to preserve any SWC options, migrate them into next.config.js by adding the
equivalent settings under the Next config (use the compiler or relevant
experimental SWC options in next.config.js) instead of .swcrc so Next.js picks
them up; reference the existing .swcrc file and update next.config.js's compiler
(or experimental SWC) object accordingly.

Comment on lines +7 to +21
font-family:
ui-sans-serif,
system-ui,
-apple-system,
BlinkMacSystemFont,
Segoe UI,
Roboto,
Helvetica Neue,
Arial,
Noto Sans,
sans-serif,
Apple Color Emoji,
Segoe UI Emoji,
Segoe UI Symbol,
Noto Color Emoji;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Este arquivo não passa nas regras atuais de Stylelint (quotes/case).

Há violações de font-family-name-quotes e value-keyword-case; isso tende a bloquear CI. Padronize os valores conforme as regras do projeto antes do merge.

Also applies to: 43-43, 55-63, 69-69, 75-83

🧰 Tools
🪛 Stylelint (17.4.0)

[error] 12-12: Expected quotes around "Segoe UI" (font-family-name-quotes)

(font-family-name-quotes)


[error] 14-14: Expected quotes around "Helvetica Neue" (font-family-name-quotes)

(font-family-name-quotes)


[error] 16-16: Expected quotes around "Noto Sans" (font-family-name-quotes)

(font-family-name-quotes)


[error] 18-18: Expected quotes around "Apple Color Emoji" (font-family-name-quotes)

(font-family-name-quotes)


[error] 19-19: Expected quotes around "Segoe UI Emoji" (font-family-name-quotes)

(font-family-name-quotes)


[error] 20-20: Expected quotes around "Segoe UI Symbol" (font-family-name-quotes)

(font-family-name-quotes)


[error] 21-21: Expected quotes around "Noto Color Emoji" (font-family-name-quotes)

(font-family-name-quotes)


[error] 18-18: Expected "Emoji" to be "emoji" (value-keyword-case)

(value-keyword-case)


[error] 19-19: Expected "Emoji" to be "emoji" (value-keyword-case)

(value-keyword-case)


[error] 21-21: Expected "Emoji" to be "emoji" (value-keyword-case)

(value-keyword-case)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Web/MeAjudaAi.Web.Admin/src/app/global.css` around lines 7 - 21, O bloco
de font-family viola regras do Stylelint (font-family-name-quotes e
value-keyword-case): revise todas as declarações de font-family e coloque entre
aspas as font-families que contêm espaços (ex.: "Segoe UI", "Helvetica Neue",
"Noto Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto
Color Emoji") e normalize os keywords para lowercase (ex.: sans-serif,
system-ui, -apple-system, BlinkMacSystemFont); aplique a mesma correção nos
outros blocos referidos (linhas indicadas no comentário) para que todas as
ocorrências de font-family sigam as regras do projeto.

Comment on lines +286 to +287
.list-item-link:hover > span {
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Remova seletores com bloco vazio para resolver block-no-empty.

Esses dois blocos vazios geram erro de lint e não agregam comportamento.

🧹 Sugestão de limpeza
-.list-item-link:hover > span {
-}
@@
-#other-links {
-}

Also applies to: 294-295

🧰 Tools
🪛 Stylelint (17.4.0)

[error] 286-287: Unexpected empty block (block-no-empty)

(block-no-empty)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Web/MeAjudaAi.Web.Admin/src/app/global.css` around lines 286 - 287,
Remova os seletores com bloco vazio em global.css para resolver o erro de lint
`block-no-empty`: exclua as regras vazias para ".list-item-link:hover > span" e
a outra regra vazia mencionada (linhas correspondentes contendo o seletor vazio
por volta de 294-295), garantindo que nenhum seletor sem declarações permaneça
no arquivo; se comportamento futuro for necessário, substitua o bloco por um
comentário explicativo ou adicione as propriedades reais em vez de deixar um
bloco vazio.

Comment on lines +2 to +6
/*
* Replace the elements below with your own.
*
* Note: The corresponding styles are in the ./index.tailwind file.
*/
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Atualize o comentário de orientação para o arquivo de estilo correto.

O comentário aponta para ./index.tailwind, mas o arquivo usado é ./global.css.

✏️ Sugestão de ajuste
-   * Note: The corresponding styles are in the ./index.tailwind file.
+   * Note: The corresponding styles are in ./global.css.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
/*
* Replace the elements below with your own.
*
* Note: The corresponding styles are in the ./index.tailwind file.
*/
/*
* Replace the elements below with your own.
*
* Note: The corresponding styles are in ./global.css.
*/
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Web/MeAjudaAi.Web.Admin/src/app/page.tsx` around lines 2 - 6, Atualize o
comentário de orientação no topo do arquivo page.tsx para apontar para o arquivo
de estilo correto: substitua a referência "./index.tailwind" por "./global.css"
no bloco de comentário inicial do arquivo (o comentário multilinha logo no
início de src/Web/MeAjudaAi.Web.Admin/src/app/page.tsx) para que a instrução
indique o arquivo de estilos atual usado pelo projeto.

@frigini frigini closed this Mar 23, 2026
@frigini frigini deleted the chore/sprint-8d-rename-blazor-admin branch April 15, 2026 20:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant